package com.zc.manager.notify.service.impl;

import java.util.List;

import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.stereotype.Service;
import com.zc.manager.notify.mapper.NotifyTemplateMapper;
import com.zc.manager.notify.domain.NotifyTemplate;
import com.zc.manager.notify.service.NotifyTemplateService;

import javax.annotation.Resource;

/**
 * 通知模版Service业务层处理
 *
 * @author wangjiabao
 * @date 2022-11-14
 */
@Service
public class NotifyTemplateServiceImpl implements NotifyTemplateService {
    @Resource
    private NotifyTemplateMapper notifyTemplateMapper;

    /**
     * 查询通知模版
     *
     * @param id 通知模版主键
     * @return 通知模版
     */
    @Override
    public NotifyTemplate selectNotifyTemplateById(Long id) {
        return notifyTemplateMapper.selectNotifyTemplateById(id);
    }

    /**
     * 查询通知模版列表
     *
     * @param notifyTemplate 通知模版
     * @return 通知模版
     */
    @Override
    public List<NotifyTemplate> selectNotifyTemplateList(NotifyTemplate notifyTemplate) {
        return notifyTemplateMapper.selectNotifyTemplateList(notifyTemplate);
    }

    /**
     * 新增通知模版
     *
     * @param notifyTemplate 通知模版
     * @return 结果
     */
    @Override
    public int insertNotifyTemplate(NotifyTemplate notifyTemplate) {
        notifyTemplate.setCreateTime(DateUtils.getNowDate());
        return notifyTemplateMapper.insertNotifyTemplate(sendTo(notifyTemplate));
    }

    /**
     * 修改通知模版
     *
     * @param notifyTemplate 通知模版
     * @return 结果
     */
    @Override
    public int updateNotifyTemplate(NotifyTemplate notifyTemplate) {
        notifyTemplate.setUpdateTime(DateUtils.getNowDate());
        return notifyTemplateMapper.updateNotifyTemplate(sendTo(notifyTemplate));
    }

    /**
     * 批量删除通知模版
     *
     * @param ids 需要删除的通知模版主键
     * @return 结果
     */
    @Override
    public int deleteNotifyTemplateByIds(Long[] ids) {
        return notifyTemplateMapper.deleteNotifyTemplateByIds(ids);
    }

    /**
     * 导入通知模版
     *
     * @param list 导入数据集
     * @return 结果
     */
    @Override
    public int importNotifyTemplate(List<NotifyTemplate> list) {
        int num = 0;
        for (NotifyTemplate notifyTemplate : list) {
            notifyTemplate.setCreateTime(DateUtils.getNowDate());
            num = num + notifyTemplateMapper.insertNotifyTemplate(notifyTemplate);
        }
        return num;
    }

    /**
     * 通知类型为 邮件时  处理收件人
     */
    public NotifyTemplate sendTo(NotifyTemplate notifyTemplate){
        JSONObject jsonObject = JSONObject.parseObject(notifyTemplate.getTemplate());
        if (notifyTemplate.getType().equals("email")){
            if (!jsonObject.getString("sendTo").isEmpty()){
                String sendTos = jsonObject.getString("sendTo");
                String[] sendTo = sendTos.split(",");
                jsonObject.put("sendTo",sendTo);
                notifyTemplate.setTemplate(jsonObject.toString());
            }
        }

        return notifyTemplate;
    }

}
